Termination Proof Script

Consider the TRS R consisting of the rewrite rules
1:    active(f(X))  → mark(cons(X,f(g(X))))
2:    active(g(0))  → mark(s(0))
3:    active(g(s(X)))  → mark(s(s(g(X))))
4:    active(sel(0,cons(X,Y)))  → mark(X)
5:    active(sel(s(X),cons(Y,Z)))  → mark(sel(X,Z))
6:    active(f(X))  → f(active(X))
7:    active(cons(X1,X2))  → cons(active(X1),X2)
8:    active(g(X))  → g(active(X))
9:    active(s(X))  → s(active(X))
10:    active(sel(X1,X2))  → sel(active(X1),X2)
11:    active(sel(X1,X2))  → sel(X1,active(X2))
12:    f(mark(X))  → mark(f(X))
13:    cons(mark(X1),X2)  → mark(cons(X1,X2))
14:    g(mark(X))  → mark(g(X))
15:    s(mark(X))  → mark(s(X))
16:    sel(mark(X1),X2)  → mark(sel(X1,X2))
17:    sel(X1,mark(X2))  → mark(sel(X1,X2))
18:    proper(f(X))  → f(proper(X))
19:    proper(cons(X1,X2))  → cons(proper(X1),proper(X2))
20:    proper(g(X))  → g(proper(X))
21:    proper(0)  → ok(0)
22:    proper(s(X))  → s(proper(X))
23:    proper(sel(X1,X2))  → sel(proper(X1),proper(X2))
24:    f(ok(X))  → ok(f(X))
25:    cons(ok(X1),ok(X2))  → ok(cons(X1,X2))
26:    g(ok(X))  → ok(g(X))
27:    s(ok(X))  → ok(s(X))
28:    sel(ok(X1),ok(X2))  → ok(sel(X1,X2))
29:    top(mark(X))  → top(proper(X))
30:    top(ok(X))  → top(active(X))
There are 47 dependency pairs:
31:    ACTIVE(f(X))  → CONS(X,f(g(X)))
32:    ACTIVE(f(X))  → F(g(X))
33:    ACTIVE(f(X))  → G(X)
34:    ACTIVE(g(0))  → S(0)
35:    ACTIVE(g(s(X)))  → S(s(g(X)))
36:    ACTIVE(g(s(X)))  → S(g(X))
37:    ACTIVE(g(s(X)))  → G(X)
38:    ACTIVE(sel(s(X),cons(Y,Z)))  → SEL(X,Z)
39:    ACTIVE(f(X))  → F(active(X))
40:    ACTIVE(f(X))  → ACTIVE(X)
41:    ACTIVE(cons(X1,X2))  → CONS(active(X1),X2)
42:    ACTIVE(cons(X1,X2))  → ACTIVE(X1)
43:    ACTIVE(g(X))  → G(active(X))
44:    ACTIVE(g(X))  → ACTIVE(X)
45:    ACTIVE(s(X))  → S(active(X))
46:    ACTIVE(s(X))  → ACTIVE(X)
47:    ACTIVE(sel(X1,X2))  → SEL(active(X1),X2)
48:    ACTIVE(sel(X1,X2))  → ACTIVE(X1)
49:    ACTIVE(sel(X1,X2))  → SEL(X1,active(X2))
50:    ACTIVE(sel(X1,X2))  → ACTIVE(X2)
51:    F(mark(X))  → F(X)
52:    CONS(mark(X1),X2)  → CONS(X1,X2)
53:    G(mark(X))  → G(X)
54:    S(mark(X))  → S(X)
55:    SEL(mark(X1),X2)  → SEL(X1,X2)
56:    SEL(X1,mark(X2))  → SEL(X1,X2)
57:    PROPER(f(X))  → F(proper(X))
58:    PROPER(f(X))  → PROPER(X)
59:    PROPER(cons(X1,X2))  → CONS(proper(X1),proper(X2))
60:    PROPER(cons(X1,X2))  → PROPER(X1)
61:    PROPER(cons(X1,X2))  → PROPER(X2)
62:    PROPER(g(X))  → G(proper(X))
63:    PROPER(g(X))  → PROPER(X)
64:    PROPER(s(X))  → S(proper(X))
65:    PROPER(s(X))  → PROPER(X)
66:    PROPER(sel(X1,X2))  → SEL(proper(X1),proper(X2))
67:    PROPER(sel(X1,X2))  → PROPER(X1)
68:    PROPER(sel(X1,X2))  → PROPER(X2)
69:    F(ok(X))  → F(X)
70:    CONS(ok(X1),ok(X2))  → CONS(X1,X2)
71:    G(ok(X))  → G(X)
72:    S(ok(X))  → S(X)
73:    SEL(ok(X1),ok(X2))  → SEL(X1,X2)
74:    TOP(mark(X))  → TOP(proper(X))
75:    TOP(mark(X))  → PROPER(X)
76:    TOP(ok(X))  → TOP(active(X))
77:    TOP(ok(X))  → ACTIVE(X)
The approximated dependency graph contains 8 SCCs: {52,70}, {51,69}, {53,71}, {54,72}, {55,56,73}, {58,60,61,63,65,67,68}, {40,42,44,46,48,50} and {74,76}.
Tyrolean Termination Tool  (43.62 seconds)   ---  May 3, 2006